#ifndef EE_H_
#	define EE_H_

#ifndef PIXEL
	#define PIXEL
	typedef unsigned char pixel;
#endif
	
typedef unsigned char EEType;

typedef struct structEE{
	EEType type;
	pixel **Matrix;
} EE;

typedef enum {
	/*
	 * || 255 255 255 ||
	 * || 255 255 255 ||		QUADRADO(3,3)
	 * || 255 255 255 ||
	 */
	EE_QUADRADO3X3 = 1,

	/*
	 * ||  0  255  0  ||
	 * || 255 255 255 ||		CRUZ(3,3)
	 * ||  0  255  0  ||
	 */
	EE_CRUZ3X3,

	/*
	 * ||  0  255  0  ||
	 * ||  0  255  0  ||		VERTICAL(3,3)
	 * ||  0  255  0  ||
	 */
	EE_VERTICAL3X3,

	/*
	 * ||  0   0   0  ||
	 * || 255 255 255 ||		HORIZONTAL(3,3)
	 * ||  0   0   0  ||
	 */
	EE_HORIZONTAL3X3,

	/*
	 * || 255  0   0  ||
	 * ||  0  255  0  ||		DIAGONALPRI(3,3)
	 * ||  0   0  255 ||
	 */
	EE_DIAGONALPRI3X3,

	/*
	 * ||  0   0  255 ||
	 * ||  0  255  0  ||		DIAGONALSEC(3,3)
	 * || 255  0   0  ||
	 */
	EE_DIAGONALSEC3X3

} EETypes;

void setType(EE*, EEType);
EEType getType(EE*);

void setMatrix(EE*, EEType);
pixel** getMatrix(EE*);

void print(EE*);

#	ifndef EE_TYPE_DEFAULT
#		define EE_TYPE_DEFAULT EE_QUADRADO3X3
#	endif

#	ifndef EE_NULL
#		define EE_NULL 0
#	endif

#endif /*EE_H_*/

